package br.com.sgmf.web.managedbean;

import br.com.sgmf.model.Marca;
import br.com.sgmf.model.Modelo;
import br.com.sgmf.service.MarcaService;
import br.com.sgmf.service.ModeloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import java.util.List;

@Controller
@Scope("request")
public class ModeloBean {

    private static final String MODELO_CADASTRADO_COM_SUCESSO = "Modelo cadastrado com sucesso!";
    private static final String MODELO_EDITADO_COM_SUCESSO = "Modelo editado com sucesso!";
    private static final String MODELO_EXCLUIDO_COM_SUCESSO = "Modelo excluído com sucesso!";

    private Modelo modelo;
    private List<Modelo> modelos;
    private List<Marca> marcas;

    @Autowired
    private ModeloService modeloService;

    @Autowired
    private MarcaService marcaService;

    @PostConstruct
    public void init() {
        modelo = new Modelo();
        modelos = modeloService.findAll();
        marcas = marcaService.findAll();
    }

    public String salvar() {
        FacesMessage message;

        if (modelo.getId() == null) {
            modeloService.save(modelo);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, MODELO_CADASTRADO_COM_SUCESSO, null);
        } else {
            modeloService.update(modelo);
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, MODELO_EDITADO_COM_SUCESSO, null);
        }

        modelo = new Modelo();

        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, message);

        return null;
    }

    public String editar(Modelo modelo) {
        this.modelo = modelo;
        return null;
    }

    public String excluir(Modelo modelo) {
        modeloService.delete(modelo);

        modelo = new Modelo();

        FacesContext context = FacesContext.getCurrentInstance();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, MODELO_EXCLUIDO_COM_SUCESSO, null);
        context.addMessage(null, message);

        return null;
    }

    public Modelo getModelo() {
        return modelo;
    }

    public void setModelo(Modelo modelo) {
        this.modelo = modelo;
    }

    public List<Modelo> getModelos() {
        return modelos;
    }

    public void setModelos(List<Modelo> modelos) {
        this.modelos = modelos;
    }

    public List<Marca> getMarcas() {
        return marcas;
    }

    public void setMarcas(List<Marca> marcas) {
        this.marcas = marcas;
    }

}
